In a network environment, a plurality of clients are able to access one or more databases in the network. FIG. 1 is a block diagram of an exemplary network environment. Each client 10a-10n is generally represented by a computer system or work station connected to a network 20, e.g., via a LAN, WAN or other suitable means, and each database 16 is managed by a database server 14 that is also connected to the network 20. Each client 10a-10n and each database server 14 includes various application programming interfaces (APIs) 12a-12n that allow the client 10a and database 14 to communicate with one another.
When a client, e.g., 10a, attempts to access a database server 14 via an API 12a, e.g., Open Database Connectivity (ODBC), Object Linking and Embedded Database (OLEDB) or Java Database Connectivity (JDBC), many pieces of information are exchanged between the client API 12a and the server 14 in order for the connection to be successful. One such piece of information is a definition of a set of capabilities or features that are supported by the client API 12a and the server 14. The client SAPI 12a must understand the capabilities or features of the server 14, and vice versa, in order to exchange data correctly.
Several methods are currently used to exchange this information. In one such method, a client API 12a and a server 14 exchange a single integer value that represents the highest level of functionality, i.e., the newest feature, supported by the server 14 or the client API 12a. Thus, for example, the client API 12a might communicate to the server 14 that the highest level of functionality it supports is feature 321, and the server 14 might communicate to the client API 12a that its highest supported function is feature 325. The parties will then agree to communicate according to the level of functionality defined by feature 321.
Both parties assume that all features with a smaller feature number, e.g., features 300-320, have been implemented in the other party. This assumption, however, may be erroneous because features may be implemented separately and not necessarily sequentially. For example, although the client's highest supported functionality is feature 321, the API 12a may or may not support feature 317. If the server 14 utilizes feature 317 during its communication with the client 10a because the server 14 incorrectly assumes the client API 12a supports feature 317, the communication can be impaired.
To address this problem, the client API 12a can implement all intermediary features up to the highest feature. Nevertheless, implementing such features is costly, in both time and expense, and some if not all of the intermediary features may be irrelevant to the highest feature or to the client API 12a in general.
Accordingly, a need exists for a method and system that allows a first device, such as a client 10a, and a second device, such as a database server 14, to exchange information regarding their respective capabilities. The method and system should describe the capabilities, instead of implying them by, for example, a single integer. The method and system should also be efficient and cost effective. The present invention addresses such a need.